home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-08-18 | 596 b | 34 lines | [TEXT/R*ch] |
- (* Option *)
-
- exception Option
-
- fun getOpt (SOME v, _) = v
- | getOpt (NONE, a) = a;
-
- fun isSome (SOME _) = true
- | isSome NONE = false;
-
- fun valOf (SOME v) = v
- | valOf NONE = raise Option;
-
- fun filter p x = if p x then SOME x else NONE
-
- fun map f NONE = NONE
- | map f (SOME x) = SOME (f x)
-
- fun join NONE = NONE
- | join (SOME x) = x
-
- fun mapPartial f NONE = NONE
- | mapPartial f (SOME x) = f x
-
- fun compose (f, g) x =
- case g x of
- NONE => NONE
- | SOME y => SOME (f y)
-
- fun composePartial (f, g) x =
- case g x of
- NONE => NONE
- | SOME y => f y
-